# 1.说明：
# 前面我们已经学习过了好几种类型的对象了，比如：整数类型对象、字符串类型对象、列表类型对象、元组类型的对象等等。
# 这些对象通常都拥有属于自己的方法（英文叫 method ），自己能使用，其他对象无法使用

# 2.列表对象的方法
# append 方法就会改变列表的内容，在后面添加一个元素
# 2.1.append()
a = [1, 2, 3.14, 'hello']
a.append('你好')
print(a)  # [1, 2, 3.14, 'hello', '你好']

a.append([7, 8])
print(a)  # [1, 2, 3.14, 'hello', '你好', [7,8]]

# 2.2.insert()
# 在 指定位置插入一个元素，就可以使用 insert 方法
a1 = [1, 2, 3.14, 'python3.vip']
# 插入到索引0的位置，也是插到第1个元素的位置上
a1.insert(0, '你好')
print(a1)  # ['你好', 1, 2, 3.14, 'python3.vip']

# 2.3.pop()
# 从列表 取出并删除 一个元素，就可以使用 pop 方法
a3 = [1, 2, 3.14, 'python3.vip']
# 取出索引为 3 的元素，也就是第4个元素
poped = a3.pop(3)
# 取出后，a3 列表对象内容就变成了 [ 1, 2, 3.14]
print(f'a3：{a3}')
# 而取出的元素赋值给变量 poped， poped 的内容就是 'python3.vip'
print(poped)

# 2.4.remove()
# remove方法也是删除列表元素。
# pop方法的参数是要删除元素的 索引，
# 而 remove 方法的参数就是要删除元素的 值。
# remove从第1个元素开始，寻找 和参数对象 相等的元素，如果找到了，就删除。
# 找到后，不会继续往后寻找其它相等的元素。
# 也就是说remove 最多只会删除1个元素。
var1 = ['a', 'b', 'c', 'a']
var1.remove('a')
print(var1)  # [‘b’, ‘c’, ‘a’]

# 2.5.reverse()
# reverse 方法将列表元素倒过来
var2 = [1, 2, 3]
var2.reverse()
print(var2)  # [3, 2, 1]

# 2.6.index()
# index 方法返回 参数对象 在列表 中的位置，也就是索引
var3 = [1, 2, 3, 4, 5, 6, 7]
idx = var3.index(5)
print(idx)  # 4

# 2.7.sort()
# 可以使用 sort 方法对列表进行排序
students = ['Alex', 'Tom', 'Jerry', 'Michale', 'Alex']
students.sort()
print(f'after sort: {students}')

numbers = [7, 3, 8, 2, 9]
numbers.sort()
print(f'after sort: {numbers}')

